import { cameraActive } from './cameraModule.js';
import { selectImageForAnalysis } from './imageAnalysis.js';

// 处理文件上传
function handleFiles(event, stopCamera) {
    const file = event.target.files[0];
    
    if (!file) return;
    
    // 验证文件格式
    const fileExtension = file.name.split('.').pop().toLowerCase();
    if (!['jpg', 'jpeg', 'png'].includes(fileExtension)) {
        alert('只支持JPG和PNG格式的图片');
        return;
    }
    
    // 如果摄像头是开启状态，先关闭摄像头
    if (cameraActive) {
        stopCamera();
    }
    
    // 读取文件
    const reader = new FileReader();
    reader.readAsDataURL(file);
    
    reader.onload = function(e) {
        // 直接将图片传递给分析函数
        selectImageForAnalysis(e.target.result, file.name);
    };
}

// 设置拖放上传区域
function setupDropArea(dropArea, handleFiles, stopCamera) {
    dropArea.addEventListener('dragover', (e) => {
        e.preventDefault();
        dropArea.style.borderColor = '#409eff';
    });
    
    dropArea.addEventListener('dragleave', () => {
        dropArea.style.borderColor = '#dcdfe6';
    });
    
    dropArea.addEventListener('drop', (e) => {
        e.preventDefault();
        dropArea.style.borderColor = '#dcdfe6';
        
        // 如果摄像头是开启状态，先关闭摄像头
        if (cameraActive) {
            stopCamera();
        }
        
        if (e.dataTransfer.files.length > 0) {
            // 验证格式
            const validFiles = Array.from(e.dataTransfer.files).filter(file => {
                const fileExtension = file.name.split('.').pop().toLowerCase();
                return ['jpg', 'jpeg', 'png'].includes(fileExtension);
            });
            
            if (validFiles.length === 0) {
                alert('只支持JPG和PNG格式的图片');
            } else if (validFiles.length < e.dataTransfer.files.length) {
                alert('部分文件不是JPG或PNG格式，已过滤');
                handleFiles({ target: { files: validFiles } });
            } else {
                handleFiles({ target: { files: e.dataTransfer.files } });
            }
        }
    });
}

export { handleFiles, setupDropArea };